` Лабораторна робота № 8
Тема роботи: Опрацювання структур.
Мета роботи: Здобути практичні навики опрацювання наборів різнотипних даних за допомогою відповідних структурних типів.
Методичні вказівки: 1. Проаналізувати дані, які мають бути опрацьовані в програмі, та визначити склад полів відповідної структури чи структур.
Оголосити шаблон (шаблони) структур і через декларацію typedef надати кожному шаблону наочне найменування.
Дані, що вводяться у процесі реалізації програми, занести в масив інформаційних структур. У разі введення даних дійсних типів, щоб уникнути помилки виконання функції scanf(), доцільно застосувати додаткову змінну, в яку заносити введені дійсні значення, а потім переписувати їх у відповідні поля структур.
Якщо задача передбачає використання певних довідкових даних, то доцільно сформувати з них додатковий масив, який проініціалізувати в програмі.
Для впорядкування структур застосувати один із методів сортування.
У звертаннях до полів структур обов’язково використати обидві операції: “крапка” та “стрілка”.
Виведення таблиці впорядкованих даних розпочати з виведення заголовка (“шапки” таблиці). Розрахувати й вибрати зручну для сприйняття ширину колонок таблиці та форму відображення даних.
Література: [2] . . [13] , [17] . . [18] .
Варіанти індивідуальних завдань
З клавіатури ввести набір даних з інформацією про наявність санаторних путівок: <Назва санаторію>, <Місце знаходження>, <Лікувальний профіль>, <Кількість путівок>. Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за лікувальними профілями санаторіїв. У межах кожної групи дані відсортувати за назвами санаторіїв.
З клавіатури ввести послідовність адрес, кожна з яких задається структурою з полями: <Індекс>, <Місто>, <Вулиця>, <Будинок>. Відсортувати ведені дані у порядку зростання індексів та роздрукувати їх у формі таблиці. Визначити відсоток львівських адрес.
З клавіатури ввести послідовність даних про місячні результати роботи цеху: <Номер місяця>, <План>, <Фактичний випуск>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх у порядку зменшення відсотку виконання плану. В таблиці замінити номери місяців їхніми найменуваннями.
З клавіатури ввести набір даних у формі структур, що несуть інформацію про читачів бібліотеки: <Прізвище, ініціали>, <Рік народження>, <Стать>, <Адреса>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами читачів у абетковому порядку. Визначити найстаршого та наймолодшого читачів (якщо таких декілька, то вказати всіх).
З клавіатури ввести послідовність записів, які містять дані про результати сесії на курсі: <Порядковий номер>, <Група>, <Середній рейтинговий бал>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх у порядку спадання рейтингових балів. Окремо зазначити три групи напряму “Комп’ютерні науки” з найвищим середнім рейтинговим балом.
З клавіатури ввести набір структур з полями: <Ключ>, <Дані> (ключ – ціле число). Відсортувати введені записи за зростанням значень ключів. У відсортований масив ввести два нових записи так, щоб зберегти загальну впорядкованість масиву. Роздрукувати результуючий масив.
Задано масив довідкової інформації зі записами, що мають поля: <Код товару>, <Вартість>. З клавіатури ввести послідовність даних про надходження товарів: <Найменування товару>, <Код>, <Кількість> (дані про один і той самий товар можуть зустрічатись декілька разів). Сформувати масив з введених даних. За даними цих двох масивів роздрукувати зведений список у вигляді таблиці з колонками: <Код>, <Найменування товару>, <Кількість>, <Сумарна вартість>, відсортований за кодами товарів.
З клавіатури ввести набір даних про книги у формі: <Автор>, <Найменування>, <Видавництво>, <Рік видання>. Надрукувати введений список книг у вигляді таблиці, згрупувавши їх за роками видань у спадному порядку. Окремо вивести дані про книги з програмування в середовищі C/C++.
З клавіатури ввести послідовність даних про школярів – учасників спортивних змагань: <Прізвище, ім’я >, <Школа>, <Клас>. Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за номерами шкіл у зростаючому порядку, а в межах школи – за класами. Визначити школу, з якої в змаганнях приймає участь найбільше дев’ятикласників.
З клавіатури ввести набір цілочислових даних, які задають координати (x, y, z) групи проcторових точок. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за зростанням координати z. Визначити, чи є підгрупи точок, що належать спільним горизонтальним площинам (мають однакову координату z ). Якщо так, то визначити найчисельнішу групу, інакше вивести повідомлення про відсутність спільних груп.
З клавіатури ввести послідовність записів, які складаються зі слів-термінів і їхніх перекладів на іноземну мову. Очистити екран. Випадковим чином вибрати з масиву-словника N термінів (серед них не повинно бути повторень), до кожного з яких користувач повинен ввести переклад. Визначити відсоток правильних відповідей.
З клавіатури ввести послідовність даних, які містять координати ( x, y) та колір набору екранних точок (кількість кольорів не перевищує 16). Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за кольорами. Визначити дві точки кожного кольору, віддаль між якими найбільша.
З клавіатури ввести набір даних про автомобілі за формою: <Марка>, <Номер автомобіля>, <Рік випуску>, <Пробіг>. Роздрукувати введений список у вигляді таблиці, відсортувавши його за роками випуску автомобілів від найсучасніших до найстаріших. Визначити і надрукувати дані про середній пробіг по кожній з марок автомобілів.
З клавіатури ввести послідовність даних, які містять дані про результати сесії студентів групи: <Прізвище, ім’я>, <Список рейтингових оцінок>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами студентів в абетковому порядку. Визначити двох студентів з найвищим середнім рейтинговим балом.
З клавіатури ввести послідовність записів, які містять дані медичного обстеження студенів: <Прізвище, ініціали>, <Вік>, <Стать>, <Зріст>, <Вага>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами студенів в абетковому порядку. Визначити середній зріст і вагу студентів жіночої і чоловічої статі.
З клавіатури ввести послідовність структур з полями: <Числовий код>, <Повідомлення>. Сформувати масив із введених даних. Відсортувати введені записи в порядку спадання кодів і роздрукувати відсортований масив. Визначити кількість повідомлень, в кодах яких поруч записані дві однакові цифри.
З клавіатури ввести послідовність даних про вокальні колективи району: <Назва колективу>, <Рік створення>, <Кількість учасників>, <Керівник>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за назвами колективів в абетковому порядку. Випадковим чином вибрати зі списку три колективи, надрукувати їхні найменування та вказати найбільш чисельний серед цих колективів.
З клавіатури ввести послідовність даних про результати роботи бригади за тиждень: <Номер дня>, <План>, <Фактичний виробіток>. Сформувати масив із введених даних і відсортувати їх у порядку зростання плану. Роздрукувати відсортовані дані у формі таблиці (у таблиці замінити номери днів їхніми найменуваннями.). Вказати дні з найвищим і найменшим відсотком виконання плану.
З клавіатури ввести послідовність записів, які містять дані про студентів-спортсменів інституту: <Прізвище, ім’я>, <Вік>, <Вид спорту>, <Розряд>. Надрукувати введені дані у формі таблиці, згрупувавши їх за видами спорту. Вказати кількість спортсменів, що займаються кожним з видів спорту.
З клавіатури ввести послідовність записів, які містять дані для комп’ютерного тестування школярів: <Питання>, <4 варіанти відповідей>, <Номер правильної відповіді>. Очистити екран. Випадковим чином вибирати з масиву тестових даних 5 питань (серед них не повинно бути повторень), до кожного з яких школяр повинен ввести відповідь. Вказати правильність кожної відповіді, а в разі помилки назвати вірний варіант.
З клавіатури ввести послідовність записів, які містять інформацію про студентські групи інституту: <Група>, <Загальнаь кількість студентів>, <Кількість студентів, що отримують стипендії>, <Кількість невстигаючих студентів>. Роздрукувати введені дані у формі таблиці, відсортувавши їх за курсами (номер курсу визначати з найменування групи). Наприкінці навести узагальнені дані для студентів другого курсу.
З клавіатури ввести послідовність цілочислових даних, які задають координати ( x, y, z ) вершин проcторового багатокутника. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх у порядку зростання віддалі від початку координат. Визначити, чи серед них є хоча б дві точки, які мають однакову координату x . Якщо так, то надрукувати такі групи точок.
З клавіатури ввести послідовність записів, що містять дані про результати сесії студентів групи: <Прізвище, ім’я>, <Список рейтингових оцінок>. Обчислити середній рейтинговий бал кожного студента і роздрукувати дані у вигляді таблиці, відсортувавши їх у порядку спадання середніх рейтингових балів. Вказати відсоток студентів, середній рейтинговий бал яких перевищує 70.
З клавіатури ввести послідовність записів, які містять дані про хід передплати періодичних видань: <Найменування видання>, <Індекс>, <Кількість передплатників>. Сформувати масив із введених даних і роздрукувати ці дані у вигляді таблиці, попередньо відсортувавши їх за індексами. Визначити два найбільш популярні видання.
З клавіатури ввести послідовність структур, кожна з яких задає координати двох протилежних (лівої верхньої і правої нижньої) вершин прямокутника, сторони якого паралельні до осей координат. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за зростанням лівої координати x прямокутника. Визначити й вказати прямокутники з найбільшою і найменшою площею.
Задано масив довідкової інформації зі записами: <Код виробу>, <Ціна виробу>. З клавіатури ввести послідовність даних про вироби, відправлені зі складу протягом тижня: <Найменування виробу>, <Код>, <Кількість> (дані про один і той самий товар можуть зустрічатись декілька разів). Сформувати масив з введених даних. За даними цих двох масивів роздрукувати зведений список у вигляді таблиці з колонками: <Найменування товару>, <Сумарна кількість>, <Загальна вартість>, попередньо відсортувавши дані в порядку спадання параметра <Загальна вартість>.
З клавіатури ввести набір даних з інформацією про результати технічного огляду автомобілів: <Номер автомобіля>, <Марка>, <Власник>, <Несправності>. Роздрукувати введений список у вигляді таблиці, відсортувавши його за прізвищами власників в абетковому порядку. Визначити марку, автомобілів якої найбільше в списку.
З клавіатури ввести послідовність записів, які містять дані медичного обстеження школярів: <Прізвище, ім’я>, <Дата народження>, <Зріст>, <Вага>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами учнів в абетковому порядку. Визначити двох найвищих школярів серед дітей віком від 9 до 10 років.
З клавіатури ввести набір даних про книги у формі <Автор>, <Найменування>, <Рік видання>, <Примітки>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх в абетковому порядку за прізвищами авторів. Окремо надрукувати список книг, виданих до 1970 року.
З клавіатури ввести послідовність даних про школярів – учасників олімпіади: <Прізвище, ім’я>, <Місто>, <Школа>, <Клас>. Роздрукувати введені дані у вигляді таблиці, попередньо відсортувавши їх за прізвищами учнів в абетковому порядку. Визначити місто, звідки на олімпіаду приїхало найбільше школярів.